{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Linear Support Vector Machine: Soft Margin\n",
    "----------------------------------\n",
    "\n",
    "This function shows how to use TensorFlow to create a soft margin SVM\n",
    "\n",
    "We will use the iris data, specifically:\n",
    "\n",
    "$x_1 =$ Sepal Length\n",
    "\n",
    "$x_2 =$ Petal Width\n",
    "\n",
    "Class 1 : `I. setosa`\n",
    "\n",
    "Class -1: `not I. setosa`\n",
    "\n",
    "We know here that x and y are linearly seperable for I. setosa classification.\n",
    "\n",
    "\n",
    ">Note that we implement the soft margin with an allowable margin of error for points.  The margin of error term is given by 'alpha' below.  To behave like a hard margin SVM, set alpha = 0. (in notebook code block #7)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 156,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import tensorflow as tf\n",
    "from sklearn import datasets\n",
    "from tensorflow.python.framework import ops\n",
    "ops.reset_default_graph()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Set a random seed and start a computational graph."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 157,
   "metadata": {},
   "outputs": [],
   "source": [
    "np.random.seed(41)\n",
    "tf.set_random_seed(41)\n",
    "sess = tf.Session()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Load the data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 158,
   "metadata": {},
   "outputs": [],
   "source": [
    "# iris.data = [(Sepal Length, Sepal Width, Petal Length, Petal Width)]\n",
    "iris = datasets.load_iris()\n",
    "x_vals = np.array([[x[0], x[3]] for x in iris.data])\n",
    "y_vals = np.array([1 if y == 0 else -1 for y in iris.target])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Split data into train/test sets"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 159,
   "metadata": {},
   "outputs": [],
   "source": [
    "train_indices = np.random.choice(len(x_vals),\n",
    "                                 round(len(x_vals)*0.8),\n",
    "                                 replace=False)\n",
    "test_indices = np.array(list(set(range(len(x_vals))) - set(train_indices)))\n",
    "x_vals_train = x_vals[train_indices]\n",
    "x_vals_test = x_vals[test_indices]\n",
    "y_vals_train = y_vals[train_indices]\n",
    "y_vals_test = y_vals[test_indices]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Set model parameters, placeholders, and coefficients."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 160,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Declare batch size\n",
    "batch_size = 110\n",
    "\n",
    "# Initialize placeholders\n",
    "x_data = tf.placeholder(shape=[None, 2], dtype=tf.float32)\n",
    "y_target = tf.placeholder(shape=[None, 1], dtype=tf.float32)\n",
    "\n",
    "# Create variables for SVM\n",
    "A = tf.Variable(tf.random_normal(shape=[2, 1]))\n",
    "b = tf.Variable(tf.random_normal(shape=[1, 1]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Declare our model and L2 Norm\n",
    "\n",
    "SVM linear model is given by the equation:\n",
    "\n",
    "$$\\left[ \\frac{1}{n} \\sum_{i=1}^{n} \\max(0, 1 - y_i(A \\cdot x - b)) \\right] + \\alpha \\cdot ||A||^{2}$$\n",
    "\n",
    "Our loss function will be the above quantity and we will tell TensorFlow to minimize it. Note that $n$ is the number of points (in a batch), $A$ is the hyperplane-normal vector (to solve for), $b$ is the hyperplane-offset (to solve for), and $\\alpha$ is the soft-margin parameter."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 161,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Declare model operations\n",
    "model_output = tf.subtract(tf.matmul(x_data, A), b)\n",
    "\n",
    "# Declare vector L2 'norm' function squared\n",
    "l2_norm = tf.reduce_sum(tf.square(A))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Here we make our special loss function based on the classification of the points (which side of the line they fall on).\n",
    "\n",
    "Also, note that `alpha` is the soft-margin term and an be increased to allow for more erroroneous classification points.  For hard-margin behaviour, set `alpha = 0`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 162,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Declare loss function\n",
    "# Loss = max(0, 1-pred*actual) + alpha * L2_norm(A)^2\n",
    "# L2 regularization parameter, alpha\n",
    "\n",
    "alpha = tf.constant([0.01])\n",
    "\n",
    "# Margin term in loss\n",
    "classification_term = tf.reduce_mean(tf.maximum(0., tf.subtract(1., tf.multiply(model_output, y_target))))\n",
    "\n",
    "# Put terms together\n",
    "loss = tf.add(classification_term, tf.multiply(alpha, l2_norm))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Creat the prediction function, optimization algorithm, and initialize the variables."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 163,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Declare prediction function\n",
    "prediction = tf.sign(model_output)\n",
    "accuracy = tf.reduce_mean(tf.cast(tf.equal(prediction, y_target), tf.float32))\n",
    "\n",
    "# Declare optimizer\n",
    "my_opt = tf.train.AdamOptimizer(0.005)\n",
    "train_step = my_opt.minimize(loss)\n",
    "\n",
    "# Initialize variables\n",
    "init = tf.global_variables_initializer()\n",
    "sess.run(init)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we can start the training loop."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 164,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Step #75 A = [[0.6558717 ]\n",
      " [0.73911524]], b = [[0.8189382]]\n",
      "Loss = [3.477592]\n",
      "Step #150 A = [[0.30820855]\n",
      " [0.37043768]], b = [[1.1588708]]\n",
      "Loss = [1.8782014]\n",
      "Step #225 A = [[0.05466478]\n",
      " [0.01620324]], b = [[1.3756151]]\n",
      "Loss = [0.61904144]\n",
      "Step #300 A = [[ 0.0723088 ]\n",
      " [-0.10384972]], b = [[1.2969997]]\n",
      "Loss = [0.50430346]\n",
      "Step #375 A = [[ 0.08872687]\n",
      " [-0.21590038]], b = [[1.214785]]\n",
      "Loss = [0.5580999]\n",
      "Step #450 A = [[ 0.10302141]\n",
      " [-0.33577552]], b = [[1.1402861]]\n",
      "Loss = [0.6007062]\n",
      "Step #525 A = [[ 0.12028285]\n",
      " [-0.46366042]], b = [[1.0620526]]\n",
      "Loss = [0.47809905]\n",
      "Step #600 A = [[ 0.14511389]\n",
      " [-0.59947836]], b = [[0.97037107]]\n",
      "Loss = [0.5683762]\n",
      "Step #675 A = [[ 0.16354077]\n",
      " [-0.7458742 ]], b = [[0.8814289]]\n",
      "Loss = [0.54525423]\n",
      "Step #750 A = [[ 0.17879456]\n",
      " [-0.9077223 ]], b = [[0.7907686]]\n",
      "Loss = [0.47175968]\n",
      "Step #825 A = [[ 0.20936711]\n",
      " [-1.0691159 ]], b = [[0.6802386]]\n",
      "Loss = [0.41458398]\n",
      "Step #900 A = [[ 0.23610586]\n",
      " [-1.2391784 ]], b = [[0.5687397]]\n",
      "Loss = [0.29367685]\n",
      "Step #975 A = [[ 0.25400198]\n",
      " [-1.4175522 ]], b = [[0.4644148]]\n",
      "Loss = [0.27020124]\n",
      "Step #1050 A = [[ 0.28435716]\n",
      " [-1.5984064 ]], b = [[0.3403627]]\n",
      "Loss = [0.19518968]\n",
      "Step #1125 A = [[ 0.28947395]\n",
      " [-1.7800229 ]], b = [[0.24134111]]\n",
      "Loss = [0.17559269]\n",
      "Step #1200 A = [[ 0.29275742]\n",
      " [-1.9308159 ]], b = [[0.15315711]]\n",
      "Loss = [0.13242659]\n",
      "Step #1275 A = [[ 0.3031531]\n",
      " [-2.0399206]], b = [[0.06639712]]\n",
      "Loss = [0.14762698]\n",
      "Step #1350 A = [[ 0.29892904]\n",
      " [-2.1220412 ]], b = [[0.00746878]]\n",
      "Loss = [0.10298264]\n",
      "Step #1425 A = [[ 0.29492405]\n",
      " [-2.190535  ]], b = [[-0.04703739]]\n",
      "Loss = [0.11851373]\n",
      "Step #1500 A = [[ 0.29012173]\n",
      " [-2.248803  ]], b = [[-0.0958066]]\n",
      "Loss = [0.10659091]\n"
     ]
    }
   ],
   "source": [
    "# Training loop\n",
    "loss_vec = []\n",
    "train_accuracy = []\n",
    "test_accuracy = []\n",
    "for i in range(1500):\n",
    "    rand_index = np.random.choice(len(x_vals_train), size=batch_size)\n",
    "    rand_x = x_vals_train[rand_index]\n",
    "    rand_y = np.transpose([y_vals_train[rand_index]])\n",
    "    sess.run(train_step, feed_dict={x_data: rand_x, y_target: rand_y})\n",
    "\n",
    "    temp_loss = sess.run(loss, feed_dict={x_data: rand_x, y_target: rand_y})\n",
    "    loss_vec.append(temp_loss)\n",
    "\n",
    "    train_acc_temp = sess.run(accuracy, feed_dict={\n",
    "        x_data: x_vals_train,\n",
    "        y_target: np.transpose([y_vals_train])})\n",
    "    train_accuracy.append(train_acc_temp)\n",
    "\n",
    "    test_acc_temp = sess.run(accuracy, feed_dict={\n",
    "        x_data: x_vals_test,\n",
    "        y_target: np.transpose([y_vals_test])})\n",
    "    test_accuracy.append(test_acc_temp)\n",
    "\n",
    "    if (i + 1) % 75 == 0:\n",
    "        print('Step #{} A = {}, b = {}'.format(\n",
    "            str(i+1),\n",
    "            str(sess.run(A)),\n",
    "            str(sess.run(b))\n",
    "        ))\n",
    "        print('Loss = ' + str(temp_loss))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we extract the linear coefficients and get the SVM boundary line."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 165,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Extract coefficients\n",
    "[[a1], [a2]] = sess.run(A)\n",
    "[[b]] = sess.run(b)\n",
    "slope = -a2/a1\n",
    "y_intercept = b/a1\n",
    "\n",
    "# Extract x1 and x2 vals\n",
    "x1_vals = [d[1] for d in x_vals]\n",
    "\n",
    "# Get best fit line\n",
    "best_fit = []\n",
    "for i in x1_vals:\n",
    "    best_fit.append(slope*i+y_intercept)\n",
    "\n",
    "# Separate I. setosa\n",
    "setosa_x = [d[1] for i, d in enumerate(x_vals) if y_vals[i] == 1]\n",
    "setosa_y = [d[0] for i, d in enumerate(x_vals) if y_vals[i] == 1]\n",
    "not_setosa_x = [d[1] for i, d in enumerate(x_vals) if y_vals[i] == -1]\n",
    "not_setosa_y = [d[0] for i, d in enumerate(x_vals) if y_vals[i] == -1]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Matplotlib code for plotting"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 166,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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Xspjka1unIT0hRdeCDgJ6RmhpV9xNfAaNWrQtm1bfvzxx6jXDUlNP/300yUCcu+99x7PP/88HTp04Oijj2bdunUltfpIZsyYwcUXXwxAmzZtaNGiBYsXL6Z79+7ce++9PPDAA/zwww/UretkuB977DHat29Pt27dWLFiRdRrVifMEUTSsGHp9CuvwN57B2OLYQRJKCZwzhg4/rZwN1GKnMG1117L6NGj2bRpU1zH165du2RbPX202267jQ4dOtChQwcgutS0qvL444+XyFcvXbqUE044IW47L7zwQt566y3q1q3Lb3/7Wz744AOmTp3K5MmTmTVrFvPnz6djx45s3bo1gbvPPMwRhDj//NLpQw+Frl2DscUwgqbws9IxgVDMoPCzlFx+n3324dxzz2X06NElebEkpGNxzz33lLzgIbrUdL9+/XjyySfZsWMHAIsXL2bTpk3l5KuPPfZYxo0bV3LM8uXLad26NUuWLKFVq1YMHjyY008/nS+++ILi4mL23ntv9txzT77++mtmz56dkmcSJIGuUJYxvPuuGxUUSQ6vVmQYHHNt+byWvaocLI7k+uuv54knnihJP/7441x++eUMHz6cxo0b889//jOh6w0dOpRvv/0WVaVv3760b9+egoICli1bRqdOnVBVGjduzMSJEykoKCAvL4/27dszYMAA/vjHP3L11VeTn59PzZo1GTNmDLVr1+aVV17hhRdeoFatWvzqV7/i1ltvpV69eowcOZIjjjiC1q1b061bt5Q9k6DwXYY6GdIqQ11cDI0alc5btszNGzCMLMJkqLObqshQW9dQWSfw1FPmBAzDyCly2xGcdVbpdJs2MHBgMLYYhmEERO46gn//GyaUWS554cJgbDEMwwiQ3HQEP//sFpaJZPlymy9gGEZOkpuOoKxm0DPPuMVmDMMwcpDccwSnnlo6XVAAV14ZjC2GYRgZQG45grfegkmTSud5k1EMw0g/9evXL5c3cuRInn/+eV/tmDRpEh07dqR9+/a0bdu2RIwuCEaMGMHmzZsDKx9yaULZTz/B6aeXzlu50uIChhEwV111VVqvXyKs5q0xvmPHDgYOHMgnn3xCs2bN2LZtG8uWLfOt/LKMGDGCiy++mD333DPua+7atYu8vLxUmZhDLYKyawyPGQNNmwZiimEEjkj6Pglyxx138NBDDwHQu3dvbrrpJo466igOP/xwpk+fDsSWk964cSN9+/alU6dO5Ofn8+abbwJO0rp169ZceumltGvXjhUrVpSU98svv7Bz50729d4JtWvXpnXr1gAUFRVx1lln0bVrV7p27cpHH31UYuMll1xC9+7dOeyww3j66acTLv/qq6+mS5cuHHnkkQwbNgxw4nWrVq2iT58+9OnTB4Dx48eTn59Pu3btuOmmm0rsrl+/Ptdffz3t27dn1qxZCT/nColHojToT5VlqPv1C8tKg2qnTlW7nmFUQ0rJFEf+P6T6UwH16tUrlzds2DAdPny4qqoed9xxOmTIEFVV/de//qV9+/ZV1dhy0jt27NDi4mJVVS0qKtJDDjlEd+/erUuXLlUR0VmzZkW148orr9TGjRvr+eefr2PHjtVdu3apquoFF1yg06dPV1XVH374Qdu0aVNiY0FBgW7evFmLioq0WbNmWlhYmFD5IenqnTt36nHHHafz589XVdUWLVpoUVGRqqoWFhZq8+bNdc2aNbpjxw7t06ePvvHGG95Phr788ssxn21VZKizv2vojTecllAk6ZKrMAyjypx55pkAdO7cuaTL5r333uOLL74oWZSmuLiYb7/9lmbNmnHrrbcybdo0atSoQWFhYYlMdYsWLWLqAD3zzDN8+eWXTJ48mYceeoj333+fMWPGMHnyZBZGzCfasGEDGzduBOD000+nbt261K1blz59+vDJJ59w8sknx13+K6+8wqhRo9i5cyerV69m4cKFFBQUlLLr008/pXfv3jRu3BiAiy66iGnTptG/f3/y8vI4q+wk2BSR3Y5g7Vrw/qhKWLXK4gKGkcEaYyHJ6by8PHbu3AlQIifdr1+/UseOGTOGoqIi5s6dS61atTj44INLJKHr1atXYTn5+fnk5+dzySWX0LJlS8aMGcPu3buZPXs2derUKXe8lHlviAjjxo2Lq/ylS5fy0EMP8emnn7L33nszYMCAhKWr69Spk9K4QCTZHSPwvGoJL7wABx4YjC2GYSRNLDnp4uJi9t9/f2rVqsWUKVP44YcfKr3Wxo0bmTp1akl63rx5tPD0xU444QQef/zxUvtCvPnmm2zdupV169YxdepUunbtGnf5GzZsoF69ejRs2JAff/yRd955p2RfpCT2UUcdxYcffsjatWvZtWsX48eP57jjjov/QSVJ9rYIppVZQKNbN/BWIDIMIxg2b95M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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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MjOTtwYO5EH3yMEYY7xmScEDtTMzeRWIWrWKQ7GxHLYL10wVdfDgQZKTk0lOTqZRo0ZccMEF/vmsrKxSrePOO+9kw4YNJdaZOHEi7733XnmEDMDevXuJiopi8uTJ5bbOysI6mj1QPTubB4BlmzbRbdUqjubdr9mYKqZevXqsXLkSgGeffZYaNWrwm9/8Jl8dVUVViSimb23q1KlnfJ377rvv3IMNMHPmTLp160Zqaip33313ua47kM/nC7khbkIrmjARW706ANmZmfRbuZJYn8/jiEw4GDt2rH8HXV6Sk5N59dVXy/y8TZs2MXDgQDp27MiKFSv44osveO655/juu+84deoUQ4YM4emnnQGVe/bsyeuvv067du2oX78+o0ePZs6cOcTHx/PPf/6T8847jyeffJL69eszduxYevbsSc+ePZk/fz7p6elMnTqV7t27c+LECYYPH866detISkpi69atTJ48meTk5ELxpaamMmHCBG655RZ2797tH3Hg008/5amnniInJ4eGDRvyf//3fxw7dowxY8awYsUKAMaNG8f1119P/fr1OXLkCADTp09n3rx5TJ48mdtuu42aNWuyfPlyevXqxU033cSDDz5IRkYG8fHxvPvuu7Ru3Rqfz8cjjzzCF198QUREBKNHj+bCCy9k0qRJfPjhhwDMmTOHKVOm8MEHH5zV51cUSwoeiKtZE4CsEyeIyM1F7ewjE4bWr1/PX//6V1JSUgAYP348devWxefz0bt3b2655RaSkpLyPSc9PZ0rr7yS8ePH89BDDzFlyhQef/zxQutWVZYsWcLs2bMZN24cn3/+ORMmTKBRo0bMmjWL77//nk6dOhUZ19atWzl06BCdO3dm8ODBzJw5kwceeIA9e/Zwzz33sHDhQpo3b86hQ4cA5wioQYMGrFq1ClX1J4KS7N69m0WLFhEREUF6ejoLFy4kKiqKzz//nCeffJIZM2bw5ptvsmvXLr7//nsiIyM5dOgQCQkJjBkzhoMHD1KvXj2mTp3KyJEjy7rpS2RJwQO13DuvZR09iqhaUjAV4mx+0QdTq1at/AkBnF/n77zzDj6fj127drF27dpCSSEuLo5rrrkGgM6dO7Nw4cIi133TTTf562zduhWAb775hsceewyADh06cMkllxT53OnTpzNkyBAAhg4dyr333ssDDzzAf//7X3r37u0ffaBu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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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wNChQ2nbti3r1q2jS5cuEVcnIrki8hZ+rthzzz2T5svLy9m4cWPSMndn586d6SxLRHJImKdlPg3MBA4ws5VmdkFY+2oN+vfvX2vZvHnzkuYffPBB2rdvz+DBgxkyZAgjR45k3LhxmFmtUzqrqqoYMWIEb775Zqh1i0j20DVt08jM6l1/6KGH8v7776dcV1payl577QXErp87Z84chg0bRpcuXWr9pSAiuUPXtG2l6gp7gMsvv5zVq1fzt7/9jU6dOjFs2LAW3/+qVavYsmVL0rLS0lLWr1/f4vsSkfRT4KfRkUceCcBhhx3W5PtOmTKFk046iWOPPTZp+aZNmxg9enTSsrKyslpdQOPHj8fM2L59e5376NOnD8OHD2fdunXx7fbZZx8OPPDAJtcrIplHXTpptGHDBpYvX86KFSs4+eSTG3WfDh061BvS1apfx08++YRvfetbADzwwAN89dVXfPTRR0yfPp0vv/ySwYMHM2DAAO68805++tOfcumll/Ld736XiooK2rZtG3+8I444gjlz5sS7oTZv3kynTp1q7bd6/XPPPcf06dO588476dChQ6Oem4g0X1O6dHD3jJkOP/xwzwUlJSUOtOh044037vJ93d0nTJhQ7zb33HOPr1mzxp944gmvqqrykpIS37hxY63tHn/88aTnumzZMr/xxhu9qqoqikMtkvWAYm9kxkYe8olTrgT+qlWrkkJy/fr1Lf4B0JRpzpw5Tdr+F7/4RZ3rnn76aZ83b55fddVVvmDBgvjyjz/+2N09Hvw333yz33LLLbWOTWVlpffq1csnTpwYX1ZUVOQrVqyIz7/zzjv+2muvhfwqibQOCvwMt2nTpngQzpgxw9090sBvyen5559PubyoqMgfeuihWh8wV199tQ8cONDd3d977z1/9tln4+suueQS37x5swO+1157xY9f9fp0+d3vfueA79y5M237FGmspgS++vAjUFVVRZs2bQCoqKigTZs2nHDCCfz1r3+NuLL0OOWUU3j55ZebfL8NGzbQtWvX+PcGlZWVTJs2jZNOOqnWKa/Tpk2jbdu2HHfccaxYsYLy8nIGDBiwS/X27NmTdevWUVZWljT6qUgm0GmZGS4v7+vDXh38r776anzZrFmzmDJlSnz+tNNO4x//+Ad//OMfmTVrVvoKDcmuhD3ERh5dvXp1fH7w4MGccsop5OXlcdlll1FUVATAE088wUknncTxxx/PuHHj+MY3vsE3v/lNxo0bR1lZGWaWdJ2ChrRv3x6I/f5BpFVr7J8C6ZhypUvHPXW3xLvvvuvPPvusu7u//vrr8W22bdsW32b16tXx5QcffHC8u2PIkCFJXSifffaZV1ZWRt7F09JTQ19Of/DBB7733nvXuX7QoEHx22PHjvXTTjst6fim0q9fPwd83rx5Lf8fQaSZaEKXjlr4ETnuuOP41a9+lbRs0KBBnHXWWcDXrcoxY8YkneZYUFDApZdeCsSuqOXulJaWJv3V8Nprr9G3b1/y8vJYuXIlV155ZdJ+evbsWW9tnTp1Yty4cdx66627/gRDcscdd9S7/pBDDqG0tLTO9e+991789uTJk3nhhRf4yU9+gpmxdOlSXn31VXbbbbek6xa0a9cOiP3m4dprr+Xhhx9u5rMQiUhjPxnSMeVSC78hVVVV/uijj/qmTZtqrauoqPDHH3/cKyoq4suOPvroeMv1vffeq3Wf2bNn+4svvuilpaW+cOFCHzVqlD/66KPx+zz55JP+xBNPOODDhg2L3++zzz7zK664Ir7dpEmT4rc//fRTnzdvnp900kkpW9MfffRRva3x6dOn+/3335+y9R31NHHixFrLLr744vjtajt27PDly5f7u+++688884y//fbb/tlnn7Xw/waRuqGzdHJPSUmJH3744f7GG2806X4vvvhi/BTHt956ywH/zne+k7RNVVWVT506Nf4Bc8UVV/jvfve7+PqRI0c64E899ZR37do1KRTPOeccHzZsmAP+85//POl8/+qulDvuuMMB37FjhxcUFCSF7CWXXOLFxcVJy/bZZ59dDvIrr7wyLR8Y1113nbu7b9y40c866yx/4YUX4sfrzTff9OnTpycd3+XLlzfpdROppsCXXVIdrGeccUaT7jdmzJj4XwkXXnhhrVawu/v777/fqB9f7b///g54SUmJv/32215ZWenu7r/85S+TPijmz5/vw4cPrzd0R4wY4ZdffrlXVlb6sGHD/MILL3R39+OPP94Bv/vuu0MN/bvuuitp/pxzzkmar/bYY4854DNnzvQXX3wx/pxTKS8v14/YJIkCX3ZJVVWV//73v/d169Y16X5r1qzxSy+91Ldv3+47d+5MGfiNdc011zjgZWVlScsrKipqPW5VVVV82YoVKxzwfffd15csWVJvi3ndunU+bdo0d3e//fbbvWfPnj5u3DgfOHCgv/3222n5CwDwNm3apFz+/e9/38eOHZvUZefuPn78eAf8mmuu2aVjK9lJgS+Rak7gV1RU+Oeff55y3dVXX+0XXXRR0rKf/OQnfthhh7l7bHiIJUuW7NJ+E9Xs9tl3333jtz///POk+QceeMDh6zOmWnrafffdUy7v1auXA96zZ0+/9957fdmyZb5161Z3d//nP/+p7xFyiAJfItW+fXs/+eSToy5jl1VUVCSNE7R169aU3TBjx451d/e5c+d6WVmZb926tVY3jrv7G2+84XPnzq0z1E899VQfOnRoi39YjB492kePHu0zZszwSZMmJT2/V155xauqqrysrCzpL4mtW7fW26UkmUeBL9ICxo4d64BXVVX53XffHQ/4xpg5c2bK8X6OPfZYB/zFF19M+lC45ZZb0taVVD2NGjUqfnv58uW+ZMkSB/wHP/iB79ixo8WOo4RLgS/SAqpb+i1pypQpDnhpaakvXbo03gW1fft2f+SRR7yiosJXr17t7u6dOnVKCuilS5e6uzcY5FdddVWLfSgcccQRSfNHH320FxUVeUVFhb/33nspP9S2b9/uY8aM8cWLF7fosZPUmhL4GktHJENVVlayfft2duzYQY8ePeLLi4qKeOaZZ7j33nvZtm0bH374IXPmzGHMmDH07duXnTt3csEFF3DFFVewZs0aRowYEb9vfZfR3FW9e/fmtdde4+CDD2bChAmsX7+ea6+9FjOjoqKCkpISHnvsMXr37s0NN9zApk2b6Ny5M3l5efExkNy9wUuASmoaD19EkpSXlyf9RuPWW291wPfff39ftGhRvAXf0HURwpjOPfdch9gQIaNGjfK5c+d6aWmpf/zxx/6zn/3Mv/rqK6+oqPDJkyf75s2b489h48aNPmLECH/ppZd87dq1XlRU5OvXr/d58+b5v//97zqPxcaNG339+vUpj9Gnn35aa/mGDRt8/vz5zXsBQoRa+CLSFDt37mTnzp107tyZsrIyDjroICZNmsSBBx7IfvvtR+/evZk5cyZdu3blzDPP5Mgjj2Tz5s0cddRRnHnmmVGXX69rr72WP/zhD3zxxRcccMABLFq0qNY2Q4cOpUePHrz66qs89dRTvPLKK6xevZqFCxeycuVKAEaNGkWHDh0YMGAA06ZN45133uG+++5j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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "# Plot data and line\n",
    "plt.plot(setosa_x, setosa_y, 'o', label='I. setosa')\n",
    "plt.plot(not_setosa_x, not_setosa_y, 'x', label='Non-setosa')\n",
    "plt.plot(x1_vals, best_fit, 'r-', label='Linear Separator', linewidth=3)\n",
    "plt.ylim([0, 10])\n",
    "plt.legend(loc='lower right')\n",
    "plt.title('Sepal Length vs Petal Width')\n",
    "plt.xlabel('Petal Width')\n",
    "plt.ylabel('Sepal Length')\n",
    "plt.show()\n",
    "\n",
    "# Plot train/test accuracies\n",
    "plt.plot(train_accuracy, 'k-', label='Training Accuracy')\n",
    "plt.plot(test_accuracy, 'r--', label='Test Accuracy')\n",
    "plt.title('Train and Test Set Accuracies')\n",
    "plt.xlabel('Generation')\n",
    "plt.ylabel('Accuracy')\n",
    "plt.legend(loc='lower right')\n",
    "plt.show()\n",
    "\n",
    "# Plot loss over time\n",
    "plt.plot(loss_vec, 'k-')\n",
    "plt.title('Loss per Generation')\n",
    "plt.xlabel('Generation')\n",
    "plt.ylabel('Loss')\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
